#include <stdio.h>
#include "list.h"

int func(DATABASE x, DATABASE y) {
    return x > y;
}

void printElement(DATABASE e) {
    printf("%d ", e);
}

int main() {
    // 初始化线性表
    list L = InitList();
    
    // 测试插入
    for (int i = 1; i <= 10; i++) {
        ListInsert(&L, i, i * 10);
    }
    printf("线性表的长度为：%d\n", ListLength(L));
    printf("线性表的元素为：");
    printElem(L);
    
    // 测试获取元素
    int index = 5;
    printf("线性表中第%d个元素的值为：%d\n", index, GetElem(L, index));
    
    // 测试删除
    DATABASE deleted = ListDelete(&L, index);
    printf("删除第%d位元素%d后:", index, deleted);
    printElem(L);
    
    // 测试查找
	int a = LocateElem(L, 40, func);
	if(a==-1)
		printf("没有查找到");
	else
		printf("第一个大于40的元素位置:%d\n",a);
    
    // 测试遍历
    printf("遍历线性表: ");
    ListTraverse(L, printElement);
    printf("\n");
    
    // 测试前后元素
    printf("元素30的后继是: %d\n", NextElem(L, 30));
    printf("元素50的前驱是: %d\n", PriorElem(L, 60));
    
    // 测试清空
    ClearList(&L);
    printf("清空后线性表长度: %d\n", ListLength(L));
    
    // 销毁线性表
    DestroyList(&L);
    
    return 0;
}
